﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WinForm_Test
{
    internal class Filters
    {
        public static DataTable Average = new DataTable();
        public static DataTable Gauss = new DataTable();
        public static DataTable Sharpener = new DataTable();
        public static DataTable PrewittX = new DataTable();
        public static DataTable PrewittY = new DataTable();
        public static DataTable SobelX = new DataTable();
        public static DataTable SobelY = new DataTable();
        public static DataTable Laplace = new DataTable();

        public static void FiltersInitialize()
        {
            // Average
            Average.Columns.Add("Col1", typeof(double));
            Average.Columns.Add("Col2", typeof(double));
            Average.Columns.Add("Col3", typeof(double));
            Average.Rows.Add(1.0 / 9, 1.0 / 9, 1.0 / 9);
            Average.Rows.Add(1.0 / 9, 1.0 / 9, 1.0 / 9);
            Average.Rows.Add(1.0 / 9, 1.0 / 9, 1.0 / 9);

            // Gauss
            Gauss.Columns.Add("Col1", typeof(double));
            Gauss.Columns.Add("Col2", typeof(double));
            Gauss.Columns.Add("Col3", typeof(double));
            Gauss.Rows.Add(1.0/16, 2.0/16, 1.0/16);
            Gauss.Rows.Add(2.0/16, 4.0/16, 2.0/16);
            Gauss.Rows.Add(1.0/16, 2.0/16, 1.0/16);

            // Sharpener
            Sharpener.Columns.Add("Col1", typeof(double));
            Sharpener.Columns.Add("Col2", typeof(double));
            Sharpener.Columns.Add("Col3", typeof(double));
            Sharpener.Rows.Add(-1, -1, -1);
            Sharpener.Rows.Add(-1, 9, -1);
            Sharpener.Rows.Add(-1, -1, -1);

            // Prewitt
            PrewittX.Columns.Add("Col1", typeof(double));
            PrewittX.Columns.Add("Col2", typeof(double));
            PrewittX.Columns.Add("Col3", typeof(double));
            PrewittX.Rows.Add(-1, 0, 1);
            PrewittX.Rows.Add(-1, 0, 1);
            PrewittX.Rows.Add(-1, 0, 1);

            PrewittY.Columns.Add("Col1", typeof(double));
            PrewittY.Columns.Add("Col2", typeof(double));
            PrewittY.Columns.Add("Col3", typeof(double));
            PrewittY.Rows.Add(-1, -1, -1);
            PrewittY.Rows.Add(0, 0, 0);
            PrewittY.Rows.Add(1, 1, 1);

            // Sobel
            SobelX.Columns.Add("Col1", typeof(double));
            SobelX.Columns.Add("Col2", typeof(double));
            SobelX.Columns.Add("Col3", typeof(double));
            SobelX.Rows.Add(-1, 0, 1);
            SobelX.Rows.Add(-2, 0, 2);
            SobelX.Rows.Add(-1, 0, 1);

            SobelY.Columns.Add("Col1", typeof(double));
            SobelY.Columns.Add("Col2", typeof(double));
            SobelY.Columns.Add("Col3", typeof(double));
            SobelY.Rows.Add(1, 2, 1);
            SobelY.Rows.Add(0, 0, 0);
            SobelY.Rows.Add(-1, -2, -1);

            // Laplace
            Laplace.Columns.Add("Col1", typeof(double));
            Laplace.Columns.Add("Col2", typeof(double));
            Laplace.Columns.Add("Col3", typeof(double));
            Laplace.Rows.Add(0, -1, 0);
            Laplace.Rows.Add(-1, 4, -1);
            Laplace.Rows.Add(0, -1, 0);

        }
    }
}
